package simple.number;

/**
 * <a href="https://leetcode.cn/problems/arranging-coins/">441. 排列硬币</a>
 * 你总共有 n 枚硬币，并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯，其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。
 * 给你一个数字 n ，计算并返回可形成 完整阶梯行 的总行数。
 * 示例 1：
 *   输入：n = 5
 *   输出：2
 *   解释：因为第三行不完整，所以返回 2 。
 * 示例 2：
 *   输入：n = 8
 *   输出：3
 *   解释：因为第四行不完整，所以返回 3 。
 * 提示：
 *   1 <= n <= 2^31 - 1
 * @author 刘学松
 * @date 2023-05-15 14:03
 */
public class 排列硬币 {
    public static void main(String[] args) {
        System.out.println(arrangeCoins(1804289383));
    }
    public static int arrangeCoins(int n) {
        long x = (long) Math.sqrt((long)n * 2);
        if ((x)*(x+1)/2 > n) {
            return (int)x-1;
        }
        return (int)x;
    }
}
